/**
 * 流转状态与任务关联配置 - 前端使用
 * 与cloudfunctions/mcloud/project/oa/config/flow_task_config.js保持一致
 */

// 项目状态任务配置
const FLOW_TASK_CONFIG = {
    // 待立项状态（0）
    0: [
        {
            title: '准备项目申请材料',
            type: 1, // TaskModel.TYPE.DOCUMENTATION
            priority: 2, // TaskModel.PRIORITY.HIGH
            description: '准备项目立项所需的申请材料，包括项目概述、目标、预算等',
            assignRole: 'PROJECT_MANAGER', // 分配给项目经理
            estimatedHours: 8
        }
    ],
    
    // 立项审核状态（1）
    1: [
        {
            title: '立项材料审核',
            type: 1, // TaskModel.TYPE.DOCUMENTATION
            priority: 2, // TaskModel.PRIORITY.HIGH
            description: '审核项目立项申请材料',
            assignRole: 'MANAGER', // 分配给管理层
            estimatedHours: 4
        }
    ],
    
    // 硬件确认状态（10）
    10: [
        {
            title: '硬件方案确认',
            type: 2, // TaskModel.TYPE.DESIGN
            priority: 2, // TaskModel.PRIORITY.HIGH
            description: '确认项目硬件方案与要求',
            assignRole: 'HARDWARE_ENGINEER', // 分配给硬件工程师
            estimatedHours: 16
        },
        {
            title: '硬件物料清单初步确认',
            type: 2, // TaskModel.TYPE.DESIGN
            priority: 1, // TaskModel.PRIORITY.MEDIUM
            description: '确认硬件物料清单初步方案',
            assignRole: 'HARDWARE_ENGINEER', // 分配给硬件工程师
            estimatedHours: 8
        }
    ],
    
    // 硬件设计打样状态（11）
    11: [
        {
            title: '原理图设计',
            type: 2, // TaskModel.TYPE.DESIGN
            priority: 2, // TaskModel.PRIORITY.HIGH
            description: '完成项目原理图设计',
            assignRole: 'HARDWARE_ENGINEER', // 分配给硬件工程师
            estimatedHours: 24
        },
        {
            title: 'PCB设计',
            type: 2, // TaskModel.TYPE.DESIGN
            priority: 2, // TaskModel.PRIORITY.HIGH
            description: '完成PCB设计与布局',
            assignRole: 'HARDWARE_ENGINEER', // 分配给硬件工程师
            estimatedHours: 32
        },
        {
            title: 'BOM清单定稿',
            type: 1, // TaskModel.TYPE.DOCUMENTATION
            priority: 1, // TaskModel.PRIORITY.MEDIUM
            description: '完成BOM物料清单定稿',
            assignRole: 'HARDWARE_ENGINEER', // 分配给硬件工程师
            estimatedHours: 8
        },
        {
            title: '打样采购申请',
            type: 5, // TaskModel.TYPE.INTEGRATION
            priority: 1, // TaskModel.PRIORITY.MEDIUM
            description: '提交硬件打样采购申请',
            assignRole: 'PURCHASE', // 分配给采购
            estimatedHours: 4
        }
    ],
    
    // 软硬件调试状态（12）
    12: [
        {
            title: '软件开发',
            type: 3, // TaskModel.TYPE.DEVELOPMENT
            priority: 2, // TaskModel.PRIORITY.HIGH
            description: '完成软件功能开发',
            assignRole: 'SOFTWARE_ENGINEER', // 分配给软件工程师
            estimatedHours: 40
        },
        {
            title: '硬件调试',
            type: 4, // TaskModel.TYPE.TESTING
            priority: 2, // TaskModel.PRIORITY.HIGH
            description: '硬件功能调试',
            assignRole: 'HARDWARE_ENGINEER', // 分配给硬件工程师
            estimatedHours: 16
        },
        {
            title: '软硬件联调',
            type: 5, // TaskModel.TYPE.INTEGRATION
            priority: 2, // TaskModel.PRIORITY.HIGH
            description: '软硬件联合调试',
            assignRole: 'INTEGRATION_TEAM', // 分配给集成团队
            estimatedHours: 24
        }
    ]
};

// 检查任务完成情况的配置，定义哪些任务完成后可以触发状态流转
const TASK_COMPLETION_CONFIG = {
    // 从硬件确认状态（10）到硬件设计状态（11）的流转所需完成的任务
    '10_11': {
        requiredTasks: ['硬件方案确认', '硬件物料清单初步确认'],
        allRequired: true, // 是否所有任务都必须完成
        nextStatus: 11, // 下一个状态
        nextActiveStatus: 0 // 下一个活动状态
    },
    
    // 从硬件设计状态（11）到软硬件调试状态（12）的流转所需完成的任务
    '11_12': {
        requiredTasks: ['原理图设计', 'PCB设计', 'BOM清单定稿'],
        allRequired: true,
        nextStatus: 12,
        nextActiveStatus: 0
    },
    
    // 从软硬件调试状态（12）到测试验证状态（13）的流转所需完成的任务
    '12_13': {
        requiredTasks: ['软件开发', '硬件调试', '软硬件联调'],
        allRequired: true,
        nextStatus: 13,
        nextActiveStatus: 0
    }
};

// 任务类型映射
const TASK_TYPE_MAP = {
    1: '文档',
    2: '设计',
    3: '开发',
    4: '测试',
    5: '集成',
    6: '生产',
    7: '分析'
};

// 任务优先级映射
const TASK_PRIORITY_MAP = {
    0: '低',
    1: '中',
    2: '高',
    3: '紧急'
};

// 任务状态映射
const TASK_STATUS_MAP = {
    1: '未开始',
    2: '进行中',
    3: '已完成',
    4: '已取消'
};

module.exports = {
    FLOW_TASK_CONFIG,
    TASK_COMPLETION_CONFIG,
    TASK_TYPE_MAP,
    TASK_PRIORITY_MAP,
    TASK_STATUS_MAP
}; 